package org.example.api.product;

import com.mysql.jdbc.StringUtils;
import org.example.table.Product;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.HashMap;
import java.util.Map;
@CrossOrigin
@RestController
public class SaveProductApi {

    //数据库编程对象
    @Resource
    JdbcTemplate jdbcTemplate;

    /*
     *这是一个添加商品信息的数据接口函数
     * @param product 入参复杂结构，用于接收多项商品信息
     * @return 返回结果
     */

    @PostMapping("/product/save")
    public Object handle(Product product) {
        //用于返回函数结果的mao定义在最开始
        Map map= new HashMap();
        //0.校验从页面上传来的商品数据
        if(StringUtils.isNullOrEmpty(product.getName())){    //字符串校验空
            //返回业务结果
            map.put("code","-1");
            map.put("message","商品名称不能为空");
            return map;
        }
        if(product.getPrice() == null) {    //数字校验空
            map.put("code","-1");
            map.put("message","商品价格不能为空");
            return map;
        }
        String sql = "select count(*) from product where name=?";
        Integer count = jdbcTemplate.queryForObject(sql, Integer.class, product.getName());
        if(count > 0){
            map.put("code","-1");
            map.put("message","商品名称已存在");
            return map;
        }
        //1.编写数据库SQL语句
         sql = "insert into `product`(`name`, `brand`, `price`, `discount`, `stock`) values (?,?,?,?,?)";
        //2.定义一个集合，将商品数据取出来放入集合中，此集合用于替换SQL语句中的？
        Object[] params = {
                product.getName(),
                product.getBrand(),
                product.getPrice(),
                product.getDiscount(),
                product.getStock()
        };
        //3.执行SQL语句，入参1是SQL语句，入参2是数据集合
        jdbcTemplate.update(sql, params);
        return map;
    }}
